A good answer might be:

Both. Usually objects in the world can be regarded in several ways.


Interface

Object oriented programming makes software behave like "real world" objects. This makes programs easier to think about and more reliable. In the real world, you often think about an object in several different ways. You can think of your car as a vehicle or as taxable property. It would be convenient if software objects, also, could be thought of in several ways. But a Java object belongs to just one class.

In Java, an interface is used to express an aspect of a class other than what it inherits from its parent.

An interface is a collection of constants and method declarations. The method declarations do not include an implementation (there is no method body.)

A child class that extends a parent class can also implement an interface to gain some additional behavior. Here is what an interface definition looks like:

interface InterfaceName
{
  constant definitions
  method declarations (without implementations.)
}

A method declaration is simply an access modifier, return type, and method signature followed by a semicolon.

This looks somewhat like a class definition. But no objects can be constructed from it. Objects can be constructed from a class that implements an interface. A class definition implements an interface like this:

class SomeClass extends SomeParent implements interfaceName
{

}

A class always extends just one parent but may implement several interfaces.

QUESTION 2:

(Review: ) If a class definition does not say extends SomeClass, what class does it extend?